###############################################################################
# SuperLinks                                                                  #
# Copyright (c) 2000-2007 Greg Nolle (http://greg.nolle.co.uk)                #
###############################################################################
# This program is free software; you can redistribute it and/or modify it     #
# under the terms of the GNU General Public License as published by the Free  #
# Software Foundation; either version 2 of the License, or (at your option)   #
# any later version.                                                          #
#                                                                             #
# This program is distributed in the hope that it will be useful, but WITHOUT #
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or       #
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for   #
# more details.                                                               ##                                                                             #
# You should have received a copy of the GNU General Public License along     #
# with this program; if not, write to the Free Software Foundation, Inc.,     #
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.                 #
###############################################################################
# ControlPanel/Backups.pm.pl -> Backups module                                #
###############################################################################
# DON'T EDIT BELOW UNLESS YOU KNOW WHAT YOU'RE DOING!                         #
###############################################################################
package CP::Backups;

BEGIN { require "System.pm.pl"; import System qw($SYSTEM); }
BEGIN { require "General.pm.pl"; import General qw($GENERAL); }
require "Error.pm.pl";
require "Standard.pm.pl";
require "Authenticate.pm.pl";

use strict;

require "ControlPanel/Output/Backups.pm.pl";

sub new {
  my ($class) = @_;
  my $self    = {};
  return bless($self, $class);
}

sub DESTROY { }

###############################################################################
# show subroutine
sub show {
  my $self = shift;
  my %in = (DB => undef, @_);

  #----------------------------------------------------------------------#
  # Authenticating...                                                    #
  
  &Authenticate::CP(DB => $in{'DB'}, ACTION => "BACKUPS_VIEW");

  #----------------------------------------------------------------------#
  # Getting data...                                                      #
  
  $SL::QUERY{'Sort'}    ||= "CREATE_SECOND";
  $SL::QUERY{'By'}      ||= "Z-A";
  $SL::QUERY{'Page'}    ||= 1;
  $SL::QUERY{'PerPage'} ||= 10;

  my @Backups;
  
  opendir(BACKUPS, $SYSTEM->{'BACKUP_PATH'}) || &Error::CGIError("Error opening backup directory. $!", $SYSTEM->{'BACKUP_PATH'});
  foreach my $backup (grep(/\.log$/, readdir(BACKUPS))) {
    $backup =~ m/^SL-(.*)\.log$/;
    
    my %backup;
    $backup{'ID'}            = "SL-".$1;
    $backup{'CREATE_SECOND'} = $1;
    $backup{'CREATE_DATE'}   = &Standard::ConvertEpochToDate($backup{'CREATE_SECOND'});
    $backup{'CREATE_TIME'}   = &Standard::ConvertEpochToTime($backup{'CREATE_SECOND'});
    
    if (-e "$SYSTEM->{'BACKUP_PATH'}/SL-$backup{'CREATE_SECOND'}.txt") {
      &Standard::FileOpen(*DESC, "r", "$SYSTEM->{'BACKUP_PATH'}/SL-$backup{'CREATE_SECOND'}.txt");
      $backup{'DESCRIPTION'} = join("", <DESC>);
      close(DESC);
    }
    
    push(@Backups, \%backup);
  }
  closedir(BACKUPS);

  my $Pages = &Standard::GetPages($SL::QUERY{'Page'}, scalar(@Backups), $SL::QUERY{'PerPage'});
  
  if ($SL::QUERY{'Sort'} eq "DESCRIPTION") {
    if ($SL::QUERY{'By'} eq "Z-A") {
      @Backups = sort { $b->{'DESCRIPTION'} cmp $a->{'DESCRIPTION'} } @Backups;
    } else {
      @Backups = sort { $a->{'DESCRIPTION'} cmp $b->{'DESCRIPTION'} } @Backups;
    }
  } else {
    if ($SL::QUERY{'By'} eq "Z-A") {
      @Backups = sort { $b->{$CW::QUERY{'Sort'}} <=> $a->{$CW::QUERY{'Sort'}} } @Backups;
    } else {
      @Backups = sort { $a->{$CW::QUERY{'Sort'}} <=> $b->{$CW::QUERY{'Sort'}} } @Backups;
    }
  }
  
  @Backups = @Backups[$Pages->{'start'}..$Pages->{'finish'}];
  
  my %INPUT;
  
  $INPUT{'BACKUPS'} = \@Backups;
  $INPUT{'PAGES'}   = $Pages;

  #----------------------------------------------------------------------#
  # Printing page...                                                     #

  my $Skin = Skin::CP::Backups->new();

  &Standard::PrintHTMLHeader();
  print $Skin->show(input => \%INPUT);
  
  return 1;
}

1;